import axios from 'axios'
import session from '@/utils/session' // 引入sessiontorage组件
import { Toast } from 'vant'

// 设置接口路径
const url = process.env.NODE_ENV === 'development' ? 'http://124.70.199.178:80/dms' : 'http://124.70.199.178:80/dms' // 测试

let http = axios.create({
    baseURL: url,
    timeout: 10000, // 请求延时时间
    responseType: 'text', // 请求数据类型包括  'arraybuffer', 'blob', 'document', 'json', 'text', 'stream'
    params: {} // 无论请求为何种类型，在params中的属性都会以key=value的格式在urlzhong拼接
})

// 添加请求拦截器
http.interceptors.request.use(
    config => {
      console.log('入参')
      console.log(config.data)
      let token = session.get('token')
      if (token) {
        config.headers.Authorization = token // 将token设置成请求头
        config.headers['Content-Type'] = 'application/json' // 将token设置成请求头
      }
      return Promise.resolve(config)
    },
    error => {
      return Promise.reject(error)
    }
)

// 添加响应拦截器
http.interceptors.response.use(
    res => {
        console.log('出参')
        console.log(res.data)

        let { code, msg, data } = res.data

        if (code !== 0) {
            Toast(msg)
            return
        }
        // 有data情况
        if (data) {
            return Promise.resolve(data)
        }
        // 没有data情况 - 用户获取验证码
        if (!data) {
            return Promise.resolve(res)
        }
    },
    error => {
        if (error && error.response) {
            let { status } = error.response.data
            if (status === 400) {
                Toast('服务异常')
            }
            if (status === 404) {
                Toast('页面请求地址错误')
            }
            if (status === 500) {
                Toast('服务异常')
            }
            if (status === 'canceled') {
                Toast('服务异常')
            }
        }

        // 对响应错误做点什么
        if (error.message.includes('timeout')) { // 判断请求异常信息中是否含有超时timeout字符串
            this.$toast.error('请求超时')
        }
        return Promise.reject(error)
    }
)

export {
    http
}